/*********************************************************************************
  *Copyright (c)    2021   xldeng
  *FileName:        1288.cpp.c
  *Author:          xldeng
  *Version:         1.0
  *Date:            2021/2/12 12:40
  *Description:     
  *Others:          
  *Function List:   
     1.…………
  *History:  
     1.Date:
       Author:
       Modification:
**********************************************************************************/
/*
 * 给你一个区间列表，请你删除列表中被其他区间所覆盖的区间。
 * 只有当c <= a且b <= d时，我们才认为区间[a,b) 被区间[c,d) 覆盖。
 * 在完成所有删除操作后，请你返回列表中剩余区间的数目。
 */
#include "../header.h"
class Solution {
public:
    int removeCoveredIntervals(vector<vector<int>>& intervals) {
        int n = intervals.size();
        sort(intervals.begin(), intervals.end(), [](const vector<int>& u, const vector<int>& v) {
            return u[0] < v[0] || (u[0] == v[0] && u[1] > v[1]);
        });
        int ans = n;
        int rmax = intervals[0][1];
        for (int i = 1; i < n; ++i) {
            if (intervals[i][1] <= rmax) {
                --ans;
            }
            else {
                rmax = max(rmax, intervals[i][1]);
            }
        }
        return ans;
    }
};